#pragma once

#include "transformable.h"
#include "controlcenter_global.h"
#include <osg\Vec3>
#include <QVector>

namespace VrDataCore
{
	class ActorBase;
}

namespace ControlCenter
{
	class ManipulatorBase;

	class CONTROLCENTER_EXPORT CollisionCamera:public CoreBase::Transformable
	{
	public:
		CollisionCamera(ManipulatorBase* manipulatorbase,const QString& name = "CollisionCamera");
		void setTransformable(const osg::Vec3& trans,const osg::Vec3& rota);
		void backOldTransformable();
		void addManipulator(ManipulatorBase* manipulatorbase);
		void removeManipulator(ManipulatorBase* manipulatorbase);
		unsigned int workManipulatorSize();
		void clearAllManipulator();
	protected:
		virtual ~CollisionCamera();
	private:
		osg::Vec3 _oldTranslation;
		osg::Vec3 _oldRotation;
		QVector<ManipulatorBase*>					_manipulatorBaseVector;
	public slots:
		virtual void onMessage(MessageData*);
	};
}